@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

REM 2FA Manager - 环境配置脚本（Windows）
REM 用于快速设置开发环境

echo.
echo 🚀 2FA Manager - 环境配置向导
echo ================================
echo.

REM 检查Node.js
echo 📦 检查依赖...
where node >nul 2>&1
if %ERRORLEVEL% NEQ 0 (
    echo ❌ Node.js未安装，请先安装Node.js 18+
    pause
    exit /b 1
)
for /f "tokens=*" %%i in ('node -v') do set NODE_VERSION=%%i
echo ✅ Node.js: %NODE_VERSION%

REM 检查npm
where npm >nul 2>&1
if %ERRORLEVEL% NEQ 0 (
    echo ❌ npm未安装
    pause
    exit /b 1
)
for /f "tokens=*" %%i in ('npm -v') do set NPM_VERSION=%%i
echo ✅ npm: %NPM_VERSION%
echo.

REM 生成密钥
echo 🔐 生成安全密钥...
for /f "tokens=*" %%i in ('node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"') do set JWT_SECRET=%%i
for /f "tokens=*" %%i in ('node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"') do set REFRESH_TOKEN_SECRET=%%i
for /f "tokens=*" %%i in ('node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"') do set ENCRYPTION_KEY=%%i
echo ✅ 已生成安全密钥
echo.

REM 创建后端.env文件
echo 📝 创建后端环境配置...
if exist "backend\.env" (
    echo ⚠️  backend\.env 已存在
    set /p OVERWRITE="是否覆盖？(y/n): "
    if /i "!OVERWRITE!" NEQ "y" (
        echo 跳过后端配置...
        goto FRONTEND_ENV
    )
)

(
echo # 2FA Manager Backend Environment Variables
echo NODE_ENV=development
echo PORT=5000
echo HOST=localhost
echo DATABASE_URL=file:./dev.db
echo.
echo # JWT配置
echo JWT_SECRET=%JWT_SECRET%
echo REFRESH_TOKEN_SECRET=%REFRESH_TOKEN_SECRET%
echo JWT_EXPIRES_IN=15m
echo REFRESH_TOKEN_EXPIRES_IN=7d
echo.
echo # 加密配置
echo ENCRYPTION_KEY=%ENCRYPTION_KEY%
echo.
echo # CORS配置
echo ALLOWED_ORIGINS=http://localhost:3000
echo.
echo # 日志配置
echo LOG_LEVEL=debug
echo.
echo # 安全配置
echo COOKIE_SECURE=false
echo COOKIE_SAME_SITE=strict
echo.
echo # 会话配置
echo SESSION_TIMEOUT=1800
echo MAX_LOGIN_ATTEMPTS=5
echo LOCK_DURATION=15
echo.
echo # 备份配置
echo BACKUP_DIR=backups
echo BACKUP_RETENTION_DAYS=7
) > backend\.env

echo ✅ 已创建 backend\.env

:FRONTEND_ENV
REM 创建前端.env文件
echo.
echo 📝 创建前端环境配置...
if exist "frontend\.env" (
    echo ⚠️  frontend\.env 已存在
    set /p OVERWRITE="是否覆盖？(y/n): "
    if /i "!OVERWRITE!" NEQ "y" (
        echo 跳过前端配置...
        goto INSTALL_DEPS
    )
)

(
echo # 2FA Manager Frontend Environment Variables
echo VITE_API_BASE_URL=http://localhost:5000
echo VITE_APP_NAME=2FA管理系统
echo VITE_APP_VERSION=1.0.0
echo VITE_DEBUG_MODE=false
echo VITE_DEFAULT_THEME=auto
echo VITE_DEFAULT_LANGUAGE=zh-CN
echo VITE_SESSION_TIMEOUT=30
echo VITE_TOKEN_REFRESH_INTERVAL=10
) > frontend\.env

echo ✅ 已创建 frontend\.env

:INSTALL_DEPS
REM 安装依赖
echo.
echo 📦 安装项目依赖...
set /p INSTALL="是否安装依赖？(y/n): "
if /i "%INSTALL%" EQU "y" (
    echo 安装根目录依赖...
    call npm install
    
    echo 安装后端依赖...
    cd backend
    call npm install
    cd ..
    
    echo 安装前端依赖...
    cd frontend
    call npm install
    cd ..
    
    echo ✅ 依赖安装完成
)

REM 初始化数据库
echo.
echo 🗄️  初始化数据库...
set /p MIGRATE="是否初始化数据库？(y/n): "
if /i "%MIGRATE%" EQU "y" (
    cd backend
    call npm run migrate
    cd ..
    echo ✅ 数据库初始化完成
)

REM 创建管理员
echo.
echo 👤 创建管理员账户...
set /p CREATE_ADMIN="是否创建管理员？(y/n): "
if /i "%CREATE_ADMIN%" EQU "y" (
    cd backend
    call npm run create-admin
    cd ..
)

REM 完成
echo.
echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
echo ✨ 环境配置完成！
echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
echo.
echo 📝 生成的密钥信息：
echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
echo JWT_SECRET:
echo %JWT_SECRET%
echo.
echo REFRESH_TOKEN_SECRET:
echo %REFRESH_TOKEN_SECRET%
echo.
echo ENCRYPTION_KEY:
echo %ENCRYPTION_KEY%
echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
echo.
echo 🚀 下一步：
echo   1. cd backend ^&^& npm run dev    # 启动后端
echo   2. cd frontend ^&^& npm run dev   # 启动前端（新终端）
echo.
echo 或使用根目录命令：
echo   npm run dev    # 同时启动前后端
echo.
echo 🌐 访问地址：
echo   前端: http://localhost:3000
echo   后端: http://localhost:5000
echo.
echo ⚠️  请妥善保管上述密钥，不要泄露！
echo.
pause

